5
תגובות

יעילות

פתח Ben ,
אני פולט מידע לפי id שמתקבל בכתובת, ואני צריך לשמור את ה id הזה במקום מסויים ללא כפילויות.
אם אני אשמור את זה במסד, בכל פעם שיכנסו לאתר אני אצטרך להריץ חיפוש ולבדוק אם האיידי קיים ואם הוא לא קיים אני צריך להכניס אותו, הבעיה היא ביעילות של זה ובכובד של המסד, כי יש המון כניסות לאתר ומיליוני idים.

אפשרות שניה היא לשמור את הכל בקובץ, ולהריץ חיפוש על הקובץ. במידה והid אינו קיים אני אכתוב אותו בקובץ ובמידה והוא קיים אני לא אעשה כלום. השאלה שלי היא מבחינת יעילות.

הid זה לא משהו סודי או אישי שצריך להסתיר, הוא מפורסם לכולם.
אני כמובן חשבתי על הקובץ, אבל אשמח לשמוע הצעות אחרות ליעול.

5 תשובות

avatar ענה ArielTador ב 29 לינואר 2014 #

היי,
השיטה היעילה לפי דעתי היא לשים את ה - IDים בקובץ, ולחסום את הגישה לקובץ דרך HTACCESS.

בהצלחה ;)

avatar ענה Michael ב 29 לינואר 2014 #

קובץ זה לא מחשבה נכונה. ברגע שאתה פורס את המערכת שלך לעוד שרת, אתה נדפק פה, אלא אם כן לא אכפת לך באמת שלכל שרת יהיה קובץ חדש משלו על הfilesystem. בכל מקרה, עבודה מול filesystem זה לא כזה מהיר, בנוסף יהיה לך lockים על כתיבה וככה אם יהיה לך 10 בקשות במקביל ותרשום לקובץ השרת יחזיר response סינכרוני - כי כל תהליך יחכה שהlock מהקובץ ירד.
אני לא יודע מה המשאבים שיש לך, אבל הכי הגיוני זה פשוט לעשות טבלת dictionary שפשוט תהיה במבנה של id | yourId והעמודה yourId פשוט תהיה עם אינדקס unique, והשאילתה שלך תהיה פחות או יותר ככה: insert into table (yourId) values (123) on duplicate ignore או אפילו on duplicate yourId=yourId, וככה אתה חוסך גם בדיקה אם הרשומה קיימת כבר.

avatar ענה Ben ב 29 לינואר 2014 #

@Michael תודה על התשובה.
מה אתר אומר על טבלת Archive ?. בכל מקרה היא מאפשרת רק select ו insert שאני משתמש רק בהם וכמות הנתונים היא ממש ממש גדולה...
לגבי הכפילויות, פשוט הגדרתי את העמודה עם אינדקס יוניק כמו שאמרת.. מצויין.

avatar ענה Michael ב 29 לינואר 2014 #

אתה צריך לזכור שבarchive לא יהיה לך אפשרות לאינדקסים. בכל מקרה, זה הכל תלוי בשימוש שלך. לרוב טבלאות archive נועד למידע שהוא לא צריך להיות בlive ולא אכפת לך לחכות כמה דקות לקבל את המידע, לצורך הדוגמה אם יש לך מערכת טרנזקציות כספיות לרוב תשתמש במידע של היום, אבל יהיה לך טבלה אחת שתכיל את המידע של היום וטבלת archive היסטוריה שפעם ביום פשוט להעביר לשם את המידע.
אם אתה באמת לא רואה שאתה צריך את המידע הזה נגיש ממש, לא עושה עליו יותר מדי פעולות, אז למה לא, שים archive.

avatar ענה Ben ב 29 לינואר 2014 #

@Michael , תודה רבה !.
כעיקרון לא מפריע לי לחכות כמה דקות לקבל את המידע, אפילו כמה שעות.